%
%~~
%~~  Capítulo Sobre Visão Computacional
%~~
%
\chapter{Abordagem Computacional}
\label{01:chp:abordagem_computacional}
% Nesta seção são apresentadas algumas diferentes abordagens computacionais %
% Observações da Anna: primeiro falar da arquitetura lógica comumente usada (sem detalhamento): captura img, processa img e extrai atributos/descritores, classifica atributos em classes que representam as emoções. Depois detalha as fases. %
	A todo tempo as pessoas estão realizando processos de identificação de características faciais, essa é afinal uma maneira de interação humana muito comum e rotineira. Porém, quando vistas pelo prisma computacional, a mesma tarefa adquire uma complexidade muito maior. A grande quantidade de variáveis envolvidas no processo de detecção dificulta a criação de um algoritmo eficiente para todas as situações. Por exemplo, a diferença na idade, na etnia, no gênero, no cabelo, na presença ou não de óculos, na iluminação, na oclusão ou não da imagem e inúmeros outros fatores tornam a tarefa de encontrar uma estratégia eficiente para identificação de faces e expressões faciais uma tarefa complexa.
	
	O processo de reconhecimento automatizado de expressões faciais tem inúmeros aspectos em comum com o de reconhecimento facial em si e os estudos em uma área podem ser aplicados na outra com eficiência. É comum que estes processos sejam subdivididos em subprocessos. Enquanto algumas divisões são feitas apresentando uma certa codependência, com uma etapa não totalmente separada da outra \citep{Zhao03facerecognition}, outras são compostas por elementos bem definidos e independentes \citep{Fasel99automaticfacial}.
	
	Neste último modelo, a divisão é feita em três tarefas essenciais, são elas: aquisição de imagens, extração de características faciais e classificação das expressões faciais. A figura abaixo mostra um diagrama contendo as etapas do processo de reconhecimento facial e algumas das abordagens existentes para cada uma delas (indicadas pela numeração). O detalhamento de cada uma dessas etapas será feito nos itens a seguir.
\pagebreak

\begin{figure}[h!]
	\center
	\includegraphics[scale=0.4]{images/fasel02_automatic_fig2.png}
	\label{img:fasel_fig2}
	\caption{Diagrama geral do processo de reconhecimento de expressões faciais, retirada de \citet{Fasel99automaticfacial}}
\end{figure}

\section{Aquisição de Imagens}
\label{01:sec:aquisicao}
% Exemplos de como são feitas as capturas de imagem %
	O processo de aquisição de imagem consiste basicamente em obter uma imagem de uma face humana. A aquisição de imagens pode envolver a utilização de detecção facial automática dependendo dos requisitos do sistema, razão que justifica uma certa comunicação entre a aquisição e a extração de características faciais. Uma abordagem possível nessa etapa é a normalização de irregularidades nas imagens, como por exemplo a pose e efeitos de iluminação.
%ADICIONAR EXEMPLOS NO "DETECÇÃO FACIAL AUTOMÁTICA" %
	
	O aparecimento, em situações reais, de elementos relacionados a pose de uma face como a variação de tamanho e rotações pode ser determinante para o existência ou não de características faciais \citep{Fasel99automaticfacial}. A verificação da imagem em diferentes resoluções é uma estratégia para solucionar a questao da variação na escala \citep{Essa97coding}. Já a iluminação gera problemas devido a sua incidência não regular e para solucionar esse problema são aplicados os \textit{Gabor Wavelet} \citep{Fellenz99comparingtemplate}. Apesar da realização da normalização não ser obrigatória ela simplifica o processo de extração de características faciais.


\section{Descritores}
\label{01:sec:descritores}
% Exemplos de descritores mais utilizados, e como eles extraem os atributos da imagem %
	A etapa que segue a aquisição e possível tratamento da imagem é a de extrair uma representação das feições do rosto de uma pessoa a partir das imagens obtidas. Inúmeras diferentes abordagens existem,  porém duas grandes se destacam a holística e a local \citep{Fasel99automaticfacial, Zhao03facerecognition}.
	
	A primeira (holística) é a que faz utilização da imagem da face inteira como um descritor, sem tratamento ou apenas tratando a imagem no momento da aquisição. Nesse tipo de abordagem ocorre um aumento no nível de complexidade do classificador, pois é nele que recaem as tarefas como a de lidar com as variações que existem nas imagens e foram descritas no início desta seção.
	
	Já a segunda abordagem (local) se baseia na utilização de características localizadas, na qual são extraídos da imagem original elementos locais como o nariz, a boca e os olhos; E através de algum mecanismo, como a análise de componentes principais (\textit{Principal Components Analysis} ou PCA), são obtidas representações que são alimentadas a um classificador. A complexidade nesse caso recai menos sobre o classificador e mais sobre o descritor. 

\section{Classificadores}
\label{01:sec:classificadores}
% Exemplos de classificadores, e como que é realizada a classificação %
Neste tópico, mostraremos como está dividido o estudo de classificadores e como é realizada a tarefa de classificação dos resultados obtidos pela extração das representações obtidas pelos descritores. 

De \citet{OpenCV}, os classificadores são os responsáveis por transformar dados computacionais em informações recebendo padrões de imagem pré-definidas como entrada. Existem 4 formas de se atingir esse objetivo: usando Maquinas Estatísticas, Redes de Opinião(Redes Bayesianas), Campos Aleatórios de Markov ou alguns outros modelos gráficos que podem ser melhor esclarecidos em \citet{Bishop07} e \citet{Duda00}.


\subsection{Classificadores do OpenCV}
\label{01:sec:opencv_classificadores}
%
	Primeiramente houve uma pesquisa para verificar se o OpenCV já possuia algum tipo de classificador. A partir de \citet{OpenCV}, descobriu-se que, entre as bibliotecas do OpenCV, existe uma chamada MLL(Machine Learning Library). Essa biblioteca lida na maior parte com máquinas estatística e, portanto, a lista de algoritmos suportados é: Mahalanobis, K-means, Normal/Naïve Bayes(NB), Árvores de Decisão, Boosting(combinação de algoritmos ditos fracos com fortes), Árvores Aleatórias, Face Detector/Haar, Expectation Maximization(EM), K-nearest neighbors(KNN), Redes Neurais/Multilayer Perceptron(MLP) e Support Vector Machine (SVM).

\subsubsection{Algoritmos}
	Como forma de se analisar quais algoritmos são os mais usados ou os mais reconhecidos para a nossa aplicação, buscou-se artigos que endereçassem o problema de classificar expressões faciais. 
	\citet{Dornaika}, um artigo muito recente, usa 5 abordagens acima para reconhecimento usando máquinas de aprendizado(SVM, KNN, NB, Bayes Network e Árvores de Decisão) e tenta compará-las usando imagens de sequências de 9 quadros de um mesmo banco de dados. 
\begin{figure}[h!]
	\center
	\includegraphics[scale=1.0]{images/Classificadores.png}
	\label{img:tabelaalgoritmos}
	\caption{Resultados das Classificações de Expressões Faciais, extraído de \citet{Dornaika}}
\end{figure}

	Na tabela, C4.5 é o algoritmo de Árvore de Decisão. Vale a pena ainda citar que muitos trabalhos recentes \citep{CERT, Cohn10advancesin} usam SVM como classificadores.